﻿using FlashPay.EF;
using FlashPay.EF.Models;
using FlashPay.Entity.Parameter;
using System.Collections.Generic;
using FlashPay.Entity;
using FlashPay.Entity.Request.Report;
using FlashPay.Entity.Response.Report;
using FlashPay.Entity.Response.BankCard;

namespace FlashPay.Service.Report
{
    /// <summary>
    /// 报表业务接口
    /// </summary>
    public interface ReportService
    {
        /// <summary>
        /// 获取公司月份报表
        /// </summary>
        /// <param name="request">请求参数</param>
         JResult<ReportResponse> GetCompanyMonthsReport(CompanyMonthsReportRequest request);

        /// <summary>
        /// 获取年报表
        /// </summary>
        /// <param name="query">查询条件</param>
        /// <returns>List<UserInfo></returns>
        JResult<ReportResponse> GetReportByYear(ReportStatisticsQuery query);


        /// <summary>
        /// 获取银行卡月份报表
        /// </summary>
        /// <param name="request">请求参数</param>
        JResult<ReportResponse> GetBankCardMonthsReport(BankCardMonthsReportReqeust request);

        List<BankCardDetailResponse> GetBankCardDetail(BankCardDetailQuery query);

        /// <summary>
        /// 获取最后更新时间
        /// </summary>
        /// <returns></returns>
        JResult<string> GetLastUpdateDate();

        /// <summary>
        /// 银行明细报表
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        DataGrid<BankDetailResponse> BankDetail(BankDetailRequest request);

        JResult<List<BankCardResponse>> GetBankCardListByCompanyId(int companyId);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="companyId"></param>
        JResult CardNumberExit(int companyId, string cardNumber);
    }
}
